home *** CD-ROM | disk | FTP | other *** search
/ Adephia Powerlink / AdephiaPowerlink-030102.iso / mac / launchVT.dxr / 00005_Button Group.ls < prev    next >
Encoding:
Text File  |  2001-03-30  |  9.2 KB  |  276 lines

  1. property spriteNum, mySprite, myMember, getPDLError, myStandardMember, myRolloverMember, myMouseDownMember, myDisabledMember, myMouseDownSound, myMouseUpSound, myActiveFlag, myXRayFlag, myMessageType, myMessage, theMouseWasUp, myMouseDown, myRollover, mySubscribersList
  2. global gPhoto
  3.  
  4. on beginSprite me
  5.   Initialize(me)
  6. end
  7.  
  8. on exitFrame me
  9.   if myActiveFlag then
  10.     CheckForRollover(me)
  11.   end if
  12. end
  13.  
  14. on endSprite me
  15.   call(#PushButton_ClosingDown, mySubscribersList, me, spriteNum, myMessage)
  16. end
  17.  
  18. on Initialize me
  19.   mySprite = sprite(me.spriteNum)
  20.   myMember = mySprite.member
  21.   if not voidp(getPDLError) then
  22.     ErrorAlert(me, #getPDL_Invalid, myMember.type)
  23.   end if
  24.   repeat while the last char in myMessage = SPACE
  25.     delete char -30000 of myMessage
  26.   end repeat
  27.   if not ["do", "no action"].getPos(myMessageType) then
  28.     if myMessage contains SPACE then
  29.       ErrorAlert(me, #spaceInMessage, myMessage)
  30.     else
  31.       myMessage = symbol(myMessage)
  32.     end if
  33.   end if
  34.   myActiveFlag = myActiveFlag = #Active
  35.   myXRayFlag = myXRayFlag = "let all mouse events through"
  36.   myStandardMember = value(myStandardMember)
  37.   myRolloverMember = value(myRolloverMember)
  38.   myMouseDownMember = value(myMouseDownMember)
  39.   myDisabledMember = value(myDisabledMember)
  40.   myMouseDownSound = value(myMouseDownSound)
  41.   myMouseUpSound = value(myMouseUpSound)
  42.   if myActiveFlag then
  43.     myMember = myStandardMember
  44.     mySprite.member = myMember
  45.   else
  46.     myMember = myDisabledMember
  47.     mySprite.member = myMember
  48.   end if
  49.   mySubscribersList = []
  50.   sendAllSprites(#PushButton_OpenForBusiness, mySubscribersList, me, spriteNum, myMessage)
  51. end
  52.  
  53. on CheckForRollover me
  54.   mouseOverMe = rollOver(spriteNum)
  55.   if mouseOverMe then
  56.     if not myXRayFlag then
  57.       mouseOverMe = the mouseMember = myMember
  58.     end if
  59.     gPhoto = member(mySprite.member).name
  60.     delete char -30000 of gPhoto
  61.     put gPhoto
  62.     DisplayProduct()
  63.   end if
  64.   if myRollover = mouseOverMe then
  65.     if theMouseWasUp = the mouseUp then
  66.       exit
  67.     else
  68.       theMouseWasUp = the mouseUp
  69.       if mouseOverMe then
  70.         if the mouseUp then
  71.           if myMouseDown then
  72.             Activate(me)
  73.           else
  74.             myMember = myRolloverMember
  75.             mySprite.member = myMember
  76.           end if
  77.         else
  78.           clickOn(me)
  79.         end if
  80.       else
  81.         if the mouseUp then
  82.           if myMouseDown then
  83.             Disactivate(me)
  84.           end if
  85.         end if
  86.       end if
  87.     end if
  88.   else
  89.     myRollover = mouseOverMe
  90.     if myMouseDown then
  91.       if myRollover then
  92.         myMember = myMouseDownMember
  93.         mySprite.member = myMember
  94.       else
  95.         myMember = myStandardMember
  96.         mySprite.member = myMember
  97.       end if
  98.     else
  99.       if not (the mouseDown) and myRollover then
  100.         myMember = myRolloverMember
  101.         mySprite.member = myMember
  102.       else
  103.         myMember = myStandardMember
  104.         mySprite.member = myMember
  105.       end if
  106.     end if
  107.   end if
  108. end
  109.  
  110. on clickOn me
  111.   myMouseDown = 1
  112.   myMember = myMouseDownMember
  113.   mySprite.member = myMember
  114.   if not voidp(myMouseDownSound) then
  115.     puppetSound(myMouseDownSound)
  116.   end if
  117.   updateStage()
  118. end
  119.  
  120. on Activate me
  121.   myMouseDown = 0
  122.   theMouseWasUp = 0
  123.   myMember = myStandardMember
  124.   mySprite.member = myMember
  125.   if not voidp(myMouseUpSound) then
  126.     puppetSound(myMouseUpSound)
  127.   end if
  128.   updateStage()
  129.   case myMessageType of
  130.     "do":
  131.       do(myMessage)
  132.     "sendAllSprites":
  133.       sendAllSprites(myMessage, me, spriteNum)
  134.     "call the actorList":
  135.       call(myMessage, the actorList, me, spriteNum)
  136.   end case
  137.   call(#PushButton_Activated, mySubscribersList, me, spriteNum, myMessage)
  138. end
  139.  
  140. on Disactivate me
  141.   myMouseDown = 0
  142.   myMember = myStandardMember
  143.   mySprite.member = myMember
  144. end
  145.  
  146. on PushButton_ToggleActive me, trueOrFalse
  147.   if voidp(trueOrFalse) then
  148.     myActiveFlag = not myActiveFlag
  149.   else
  150.     case ilk(trueOrFalse) of
  151.       #integer:
  152.         myActiveFlag = trueOrFalse <> 0
  153.       otherwise:
  154.         return #invalidTypeError
  155.     end case
  156.   end if
  157.   if myActiveFlag then
  158.     myMember = myStandardMember
  159.     mySprite.member = myMember
  160.     call(#PushButton_Enabled, mySubscribersList, me, spriteNum, myMessage)
  161.   else
  162.     myMember = myDisabledMember
  163.     mySprite.member = myMember
  164.     call(#PushButton_Disabled, mySubscribersList, me, spriteNum, myMessage)
  165.   end if
  166. end
  167.  
  168. on PushButton_GetReference me, theList
  169.   case ilk(theList) of
  170.     #list:
  171.       theList.append(me)
  172.     #propList:
  173.       theList.addProp(me.spriteNum, me)
  174.     otherwise:
  175.       return me
  176.   end case
  177.   return theList
  178. end
  179.  
  180. on PushButton_Subscribe me, callingBehavior, theMessage
  181.   if not voidp(theMessage) then
  182.     if theMessage <> myMessage then
  183.       exit
  184.     end if
  185.   end if
  186.   if mySubscribersList.getPos(callingBehavior) then
  187.     exit
  188.   else
  189.     if objectp(callingBehavior) then
  190.       mySubscribersList.append(callingBehavior)
  191.       return me
  192.     end if
  193.   end if
  194. end
  195.  
  196. on PushButton_Unsubscribe me, callingBehavior
  197.   mySubscribersList.deleteOne(callingBehavior)
  198. end
  199.  
  200. on ErrorAlert me, theError, Data
  201.   case theError of
  202.     #getPDLError:
  203.       alert("Error: This behavior works only with the following members types:  " & PermittedMemberTypes(me) & RETURN & RETURN & "Hit OK and then delete this behavior from the sprite.  See the Help system for details on deleting behaviors.")
  204.       if the optionDown then
  205.         return [#getPDLError: [#comment: "ERROR:   Wrong member type.   Click 'Cancel'.", #format: #string, #range: [EMPTY], #default: EMPTY]]
  206.       end if
  207.     otherwise:
  208.       case theError of
  209.         #invalidMemberType:
  210.           if the runMode = "Author" then
  211.             behaviorName = string(me)
  212.             delete word 1 of behaviorName
  213.             delete char -30001 of behaviorName
  214.             delete char -30001 of behaviorName
  215.             alert("BEHAVIOR ERROR: Frame " & the frame & ", Sprite " & me.spriteNum & RETURN & RETURN & "Behavior " & behaviorName & " only works with Field and Text members." & RETURN & RETURN & "Current member type = #" & Data)
  216.           end if
  217.           abort()
  218.         #spaceInMessage:
  219.           if the runMode = "Author" then
  220.             alert("BEHAVIOR ERROR: Frame " & the frame & ", Sprite " & me.spriteNum & RETURN & "Behavior " & behaviorName & RETURN & RETURN & "Message includes spaces: " & QUOTE & Data & QUOTE & RETURN & "Only the first word will be used in sendAllSprite calls:" & RETURN & RETURN & "sendAllSprites (#" & Data.word[1] & ", <me>, " & spriteNum & ")")
  221.           end if
  222.       end case
  223.   end case
  224. end
  225.  
  226. on getPropertyDescriptionList me
  227.   if not (the currentSpriteNum) then
  228.     exit
  229.   end if
  230.   theMember = sprite(the currentSpriteNum).member
  231.   memberType = theMember.type
  232.   permittedTypes = PermittedMemberTypes(me)
  233.   if not permittedTypes.getPos(memberType) then
  234.     return ErrorAlert(me, #getPDLError, permittedTypes)
  235.   end if
  236.   theMemberNum = theMember.number
  237.   suitableMembersList = GetSuitableMembers(me, permittedTypes)
  238.   descriptionList = [#myStandardMember: [#comment: "- GRAPHICS - Standard member for sprite:", #format: #member, #range: suitableMembersList, #default: theMember], #myRolloverMember: [#comment: "Rollover member:", #format: #member, #range: suitableMembersList, #default: member(theMemberNum + 1)], #myMouseDownMember: [#comment: "MouseDown member:", #format: #member, #range: suitableMembersList, #default: member(theMemberNum + 2)], #myDisabledMember: [#comment: "Disabled member:", #format: #member, #range: suitableMembersList, #default: member(theMemberNum + 3)]]
  239.   soundsAvailable = GetSuitableMembers(me, [#sound])
  240.   if soundsAvailable.count() then
  241.     soundsAvailable.addAt(1, #none)
  242.     descriptionList.addProp(#myMouseDownSound, [#comment: "- SOUNDS - Sound to play on mouseDown:", #format: #sound, #range: soundsAvailable, #default: member(theMemberNum + 4)])
  243.     descriptionList.addProp(#myMouseUpSound, [#comment: "Sound to play on mouseUp:", #format: #sound, #range: soundsAvailable, #default: member(theMemberNum + 5)])
  244.   end if
  245.   descriptionList.addProp(#myActiveFlag, [#comment: "- INTERACTION - Button is initially", #format: #symbol, #range: [#Active, #inactive], #default: #Active])
  246.   descriptionList.addProp(#myXRayFlag, [#comment: "Sprites which cover the button", #format: #string, #range: ["block all mouse events", "let all mouse events through"], #default: 0])
  247.   descriptionList.addProp(#myMessageType, [#comment: "Action on mouseUp:", #format: #string, #range: ["do", "sendAllSprites", "call the actorList", "no action"], #default: "sendAllSprites"])
  248.   descriptionList.addProp(#myMessage, [#comment: EMPTY, #format: #string, #default: "YourCustomMessage"])
  249.   return descriptionList
  250. end
  251.  
  252. on GetSuitableMembers me, permittedTypes
  253.   cursor(4)
  254.   suitableMembersList = []
  255.   maxCastLib = the number of castLibs
  256.   repeat with theCastLib = 1 to maxCastLib
  257.     maxMember = the number of castMembers of castLib theCastLib
  258.     repeat with memberNumber = 1 to maxMember
  259.       theMember = member(memberNumber, theCastLib)
  260.       if permittedTypes.getPos(theMember.type) then
  261.         if theMember.name = EMPTY then
  262.           suitableMembersList.append(theMember)
  263.           next repeat
  264.         end if
  265.         suitableMembersList.append(theMember.name)
  266.       end if
  267.     end repeat
  268.   end repeat
  269.   cursor(-1)
  270.   return suitableMembersList
  271. end
  272.  
  273. on PermittedMemberTypes me
  274.   return [#bitmap, #filmLoop, #flash, #movie, #picture, #quickTimeMedia, #shape, #vectorShape]
  275. end
  276.